1.1 Scheme语法 · Scheme编程语言(第四版) 您所在的位置:网站首页 scheme 语法糖 1.1 Scheme语法 · Scheme编程语言(第四版)

1.1 Scheme语法 · Scheme编程语言(第四版)

2023-06-06 02:39| 来源: 网络整理| 查看: 265

1.1 Scheme语法

Scheme 程序由关键字,变量,结构形式,常量数据(数字,字符,字符串,被引用的向量,被引用的列表,被引用的符号),空白符,以及注释组成。

关键字,变量,符号统称标识符。标识符由字母,数字及某些特殊字符以及 Uncode 字符构成,可以用在标识符中的特殊字符包括?, !, ., +, -, *, /, , :, $, %, &, _, ~, @, 标识符不能以符号(@)开头,并且通常也不能以数字,正号(+),负号(-) 及小数点开头,以免被识别为数字。例外是+, -, ...,这3个是合法的标识符(晕了);以 -> 开头的都是合法的标识符。例如:hi, Hello, n, x, x3, x+2以及?$&*!!!都是合法的标识符。标识符之间由空白符,注释,括号,方括号,字符串(双引号),以及 # 号隔开,分隔符或其它任何 Unicode 字符可以以转义字符的形式 \xsv 包含在标识符名称中的任何地方,其中 sv 是字符的十六进制标量值。

Scheme 标识符的长度没有限制; 程序员可以根据需要使用尽可能多的字符来做标识符. 长标识符不能代替注释, 并且, 频繁使用过长的标识符会使用程序难以格式化,因此难以阅读. 一个好的规范是,在小范围内使用的标识符应该比较短,较长的标识符应该是使用范围比较大的标识符.

标识符是大小写敏感的,这与早先的修订报告(R5RS?)是不同的。

结构化形式和列表常量被包含在括号里面,例如 (a b c) 或者 (* (- x 2) y)。空列表写作 ()。配对的方括号( [] )可以代替括号使用,并且常用于点缀某些标准句法形式的子表达式,以增加代码的可读性,如本书中的示例所示。

向量类似于列表,除了前面有一个前缀#,例如#(this is a vector of symbols)。

Bytevectors(字节向量) 表示为无符号字节值(0 ~ 255 之间的精确整数)的序列,以#vu8为前缀,例如:#vu8(3 250 45 73).

字符串是由双引号引起来的字符序列,例如 "I am a string".

字符由前缀 #\加上字符本身表示,例如 #\a, 和标识符一样,字符和字符串也是大小写敏感的。

数字可以写作整数形式,例如 -123; 有理数形式,例如 1/2;浮点数或者科学计数法形式,例如 1.3 或者 1e23;以及复数形式,如 1.3-2.7i 或者 [email protected] 。在数字的语法中,大小写是不敏感的。

表示真和假的布尔值分别写作 #t 和 #f。在 Scheme 条件表达式中,只有 #f 代表 假,其它的所有对象都被视为 真。所以,3, 0, (), "false",nil 都被视为真。

每种类型的常量数据的语法的详细信息在第6章的各个部分以及从第455页开始的Scheme的形式语法中给出。

Scheme表达式可以跨越多行,并且不需要显式的终止符。表达式之间的空白字符(空格和换行)数量并不重要,所以 Scheme 程序应当适当地缩进以显示代码的结构,增加可读性。

Scheme 注释以分号(;)开头,一直延伸到行尾,注释可以出现在任意一行。对某一行的注释通常放在该行的前面一行,并且采用相同的缩进级别。对某个函数的注释通常放在该函数前面,不缩进。

Multiple comment characters are often used to set off the latter kind of comment, e.g., ;;; The followingscientific notation procedures ....

Scheme 还支持另外两种注释:块注释和 datum 注释。块注释以#|开头,以|#结尾,并且可以嵌套。datum 注释以#;开头,后面跟着一个表达式。Datum 注释常用于注释单个的定义或表达式,例如:(three #;(not four) element list)是一个只有三个元素的列表,而不是四个元素。其中的 (not four)被注释了。Datum 注释也可以嵌套, #;#;(a)(b) 把 (a)和(b)都给注释了,虽然不太直白。

一些 Scheme 对象,例如过程和端口没有标准的可打印的表示法,因此不能以常量(字面量)出现在程序中。在本书中,当显示此类值的输出时使用符号 # 来表示,例如:#, 或者 #。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有